home *** CD-ROM | disk | FTP | other *** search
/ FishMarket 1.0 / FishMarket v1.0.iso / fishies / 376-400 / disk_376 / toollibrary / tool.h < prev    next >
C/C++ Source or Header  |  1992-05-06  |  11KB  |  315 lines

  1.  #include <exec/types.h>
  2.  
  3.  #include <intuition/intuition.h>
  4.  #include <proto/exec.h>
  5.  #include <proto/dos.h>
  6.  #include <proto/mathieeedoubbas.h>
  7.  #include <proto/mathieeedoubtrans.h>
  8.  #include <proto/intuition.h>
  9.  #include <proto/graphics.h>
  10.  #include <math.h>
  11.  
  12.  #define E   2.718281828
  13.  #define PPI 3.14159265358979323846
  14.  
  15.  #define Mul(a,b) NewMul(a,b)
  16.  #define Add(a,b) NewAdd(a,b)
  17.  #define Sub(a,b) NewSub(a,b)
  18.  #define Div(a,b) NewDiv(a,b)
  19.  #define Flt(a)   NewFlt(a)
  20.  #define Fix(a)   NewFix(a)
  21.  #define Cmp(a,b) NewCmp(a,b)
  22.  #define Abs(a)   NewAbs(a) 
  23.  #define Neg(a)   NewNeg(a)
  24.  #define Pow(a,b) NewPow(a,b)
  25.  #define Tst(a)   NewTst(a)
  26.  #define Log10(a) NewLog10(a)
  27.  #define Floor(a) NewFloor(a)
  28.  #define ACos(a)  NewAcos(a)
  29.  #define ASin(a)  NewAsin(a)
  30.  #define ATan(a)  NewAtan(a)
  31.  #define Sin(a)   NewSin(a)
  32.  #define Cos(a)   NewCos(a)
  33.  #define Tan(a)   NewTan(a)
  34.  #define Log(a)   NewLog(a)
  35.  #define Sqr(a)   NewSqr(a)
  36.  
  37.  double NewSub(double a,
  38.                double b);
  39.  double NewSqr(double a);
  40.  double NewSin(double a);
  41.  double NewCos(double a);
  42.  double NewTan(double a);
  43.  double NewPow(double a,
  44.                double b);
  45.  double NewNeg(double a);
  46.  double NewMul(double a,
  47.                double b);
  48.  double NewLog10(double a);
  49.  double NewLog(double a);
  50.  double NewFlt(LONG a);
  51.  LONG NewFix(DOUBLE a);
  52.  double NewFloor(double a);
  53.  double NewDiv(double a,
  54.                double b);
  55.  double NewCos(double a);
  56.  LONG NewCmp(double a,
  57.              double b);
  58.  double NewCeil(double a);
  59.  double NewAtan(double a);
  60.  double NewAsin(double a);
  61.  double NewAdd(double a,
  62.                double b);
  63.  double NewAcos(double a);
  64.  double NewAbs(double a);
  65.  LONG NewTst(DOUBLE a);
  66.  
  67.  struct info 
  68.   {
  69.    USHORT code;
  70.    struct IntuiMessage *Nachricht;
  71.    ULONG NachrichtenArt;
  72.    APTR IAddress;
  73.    SHORT MouseX,MouseY;
  74.   };
  75.  
  76.  struct ToolBase
  77.   {
  78.    struct Library Node;
  79.    LONG SegList;
  80.    struct Library *SysBase;
  81.    struct GfxBase *GfxBase;
  82.    struct IntuitionBase *IntuitionBase;
  83.    struct Library *MathIeeeDoubBasBase;
  84.    struct Library *MathIeeeDoubTransBase;
  85.   };
  86.  
  87.  struct Block 
  88.   {
  89.    LONG Links,Rechts;
  90.    LONG RechenArt,Valid;
  91.    LONG Konstante;
  92.    LONG Fehler;
  93.    char *String;
  94.    DOUBLE Wert;
  95.    struct Block *Left,*Right;
  96.   };
  97.  
  98.  
  99.  struct Konstanten 
  100.   {
  101.    DOUBLE k1,k2,k3,k4;
  102.   };
  103.  
  104.  
  105.  
  106. /* Fehlercodes */
  107.  
  108.  #define DIVBYZERO  1 /* Es wurde durch 0 geteilt                         */
  109.  #define LOGNEG     2 /* Es wurde von Zahl <= 0 der Log gebildet          */
  110.  #define SQRTNEG    4 /* Es wurde von Zahl <0   die Wurzel gebildet       */
  111.  #define ATRIG      8 /* Es wurde von Zahl >1 oder <-1 asin/acos gebildet */
  112.  #define UNPAKLAM  16 /* Unpaarige Klammern                               */
  113.  #define TEST      32
  114.  #define NOFUNC    64 /* Keine Funktion eingegeben                        */
  115.  #define NO_KONST 128 /* Keine solche Konstante                           */
  116.  #define NO_MEM   256 /* Kein Speicher für weiteren Block                 */
  117.  #define POWERROR 512 /* Negative Zahl hoch Bruch wurde versucht          */
  118.  #define NO_FUNC 1024 /* Keine Funktion gefunden                          */
  119.  
  120. /* Rechenarten */
  121.  #define ADDI    1
  122.  #define SUBT    2
  123.  #define MULT    3
  124.  #define DIVI    4
  125.  #define POWE    5
  126.  #define SINU    6
  127.  #define COSI    7
  128.  #define TANG    8
  129.  #define ASIN    9
  130.  #define ACOS    10
  131.  #define ATAN    11
  132.  #define LOG1    12
  133.  #define LNAT    13
  134.  #define ABSO    14
  135.  #define SIGU    15
  136.  #define SQRT    16
  137.  #define FLOO    17
  138.  #define X    18
  139.  #define MKON    19    /* Math. Konstante */
  140.  #define UKON    20    /* User  Konstante */
  141.  #define ZIFF    21     /* Ziffern         */
  142.  #define KLAM    22
  143.  
  144.  VOID Print(struct RastPort *RP,
  145.             char *text,
  146.             LONG col,
  147.             LONG xpos,
  148.             LONG ypos);
  149.  ULONG EventAbfrage(struct Window *Window,
  150.                     struct info *MsgInfo);
  151.  LONG request(char *JaPointer,
  152.               char *NeinPointer,
  153.               char *BodyPointer);
  154.  VOID Fak(DOUBLE *Ziel, LONG i);
  155.  VOID NuK(DOUBLE *Ziel,LONG n,LONG k);
  156.  VOID Free_Block(struct Block *First);
  157.  VOID Free_Konst(APTR Zeiger);
  158.  APTR Init_Konst(VOID);
  159.  LONG Set_Konst_P(APTR Zeiger,LONG Nummer,DOUBLE *Wert_P);
  160.  struct Block *Init_Mem(char *string);
  161.  LONG Init_Block(struct Block *Zeiger);
  162.  LONG check(LONG z1,LONG z2,
  163.             LONG l, LONG r,
  164.             char *string);
  165.  LONG checkback(LONG z1,LONG z2,
  166.                 LONG l, LONG r,
  167.                 char *string);
  168.  VOID copy(LONG i, LONG Anzahl,
  169.            char *Ziel,char *Source);
  170.  LONG PreCalc(struct Block *Zeiger,APTR Konst);
  171.  VOID GetKonst_P(DOUBLE *Ziel,APTR Konst,LONG Nummer);
  172.  DOUBLE GetKonst(APTR Konst,LONG Nummer);
  173.  LONG Calc_P(DOUBLE *Ziel,
  174.              struct Block *Zeiger,
  175.              DOUBLE *x);
  176.  LONG AnzahlKlammern(char *string);
  177.  VOID berechnen(DOUBLE *Ziel,
  178.                 UBYTE *string,
  179.                 DOUBLE *var,
  180.                 struct Konstanten *kon,
  181.                 LONG *Fehler);
  182.  VOID left(char *Ziel,
  183.            char *string,
  184.            LONG Anzahl);
  185.  VOID right(char *Ziel,
  186.             char *string,
  187.             LONG Anzahl);
  188.  VOID mid(char *Ziel,
  189.           char *string,
  190.           LONG Anfang,
  191.           LONG Anzahl);
  192.  VOID UmwStoF(DOUBLE *Ziel,
  193.               char *string);
  194.  VOID UmwFtoS(char *Ziel,
  195.               DOUBLE *Zahl1,
  196.               LONG Nachkomma);
  197.  LONG NewRequest(struct Window *AktWindow,
  198.                  char *JaPointer,
  199.                  char *NeinPointer,
  200.                  char *BodyPointer);
  201.  
  202.  VOID Box(struct RastPort *RastPort,    /* Der RastPort */
  203.           LONG xs,                      /* Start: X     */
  204.           LONG ys,                      /* Start: Y     */
  205.           LONG xe,                      /* Ende : X     */
  206.           LONG ye);                      /* Ende : Y     */
  207.  VOID Center(struct Window *Window,     /* Das Fenster  */
  208.              char *string,              /* Der Text     */
  209.              LONG Color,                /* Die Farbe    */
  210.              LONG y_Pos);                /* Die Y-Pos.   */
  211.  VOID Gadget_On(struct Gadget *Gadget,  /* Das Gadget   */
  212.                 struct Window *Window);  /* Das Fenster  */
  213.  VOID Gadget_Off(struct Gadget *Gadget, /* Das Gadget   */
  214.                  struct Window *Window); /* Das Fenster  */
  215.  LONG GetPropPosH(struct Gadget *Gadget,/* Das Gadget   */
  216.                   LONG MaxPos);          /* Max. Pos.    */
  217.  LONG GetPropPosV(struct Gadget *Gadget,/* Das Gadget   */
  218.                   LONG MaxPos);          /* Max. Pos.    */
  219.  VOID SetPropPosH(struct Gadget *Gadget,/* Das Gadget   */
  220.                   struct Window *Window,
  221.                   LONG MaxPos,          /* Die MaxPos   */
  222.                   LONG Schrittweite,    /* Schrittweite */
  223.                   LONG NewPos);          /* Neue Posit.  */
  224.  VOID SetPropPosV(struct Gadget *Gadget,/* Das Gadget   */
  225.                   struct Window *Window,
  226.                   LONG MaxPos,          /* Die MaxPos   */
  227.                   LONG Schrittweite,    /* Schrittweite */
  228.                   LONG NewPos);          /* Neue Posit.  */
  229.  LONG PrepareTmpRas(struct RastPort *RP);/* Der RastPort */
  230.  VOID ClearTmpRas(struct RastPort *RP);   /* Der RastPort */
  231.  LONG PrepareArea(struct RastPort *RP,
  232.                   LONG MaxPoints);
  233.  VOID ClearArea(struct RastPort *RP);
  234.  struct Menu *LastMenu(struct Menu *menu);
  235.  struct MenuItem *LastItem(struct Menu *menu);
  236.  struct MenuItem *LastSub(struct Menu *menu);
  237.  struct Menu *AddMenu(struct Menu *menu,
  238.                       char *Titel,
  239.                       USHORT Flags);
  240.  struct Item *AddItem(struct Menu *menu,
  241.                       char *Titel,
  242.                       USHORT Flags,
  243.                       char HotKey);
  244.  struct Item *AddSub(struct Menu *menu,
  245.                      char *Titel,
  246.                      USHORT Flags,
  247.                      char HotKey);
  248.  struct MenuItem *GetItem(struct Menu *menu,
  249.                           char *Titel,
  250.                           USHORT Flags,
  251.                           char HotKey);
  252.  VOID ClearMenu(struct Menu *menu);
  253.  struct MenuItem *FreeItem(struct MenuItem *item);
  254.  struct Menu *FreeMenu(struct Menu *menu);
  255.  VOID NewSetMenuStrip(struct Window *Window,
  256.                       struct Menu *menu);
  257.  
  258.  
  259.  
  260.  
  261.  #pragma libcall ToolBase left 1e 9803
  262.  #pragma libcall ToolBase right 24 9803
  263.  #pragma libcall ToolBase mid 2a 109804
  264.  #pragma libcall ToolBase UmwFtoS 30 9803
  265.  #pragma libcall ToolBase copy 36 321004
  266.  #pragma libcall ToolBase check 3c 8321005
  267.  #pragma libcall ToolBase checkback 42 8321005
  268.  #pragma libcall ToolBase AnzahlKlammern 48 801
  269.  #pragma libcall ToolBase request 4e 21003
  270.  #pragma libcall ToolBase NewRequest 54 210804
  271.  #pragma libcall ToolBase EventAbfrage 5a 9802
  272.  #pragma libcall ToolBase Print 60 2108905
  273.  #pragma libcall ToolBase Box 66 3210905
  274.  #pragma libcall ToolBase Center 6c 108904
  275.  #pragma libcall ToolBase Gadget_On 72 9802
  276.  #pragma libcall ToolBase Gadget_Off 78 9802
  277.  #pragma libcall ToolBase GetPropPosH 7e 802
  278.  #pragma libcall ToolBase GetPropPosV 84 802
  279.  #pragma libcall ToolBase SetPropPosH 8a 2109805
  280.  #pragma libcall ToolBase SetPropPosV 90 2109805
  281.  #pragma libcall ToolBase PrepareTmpRas 96 901
  282.  #pragma libcall ToolBase ClearTmpRas 9c 901
  283.  #pragma libcall ToolBase PrepareArea a2 902
  284.  #pragma libcall ToolBase ClearArea a8 901
  285.  #pragma libcall ToolBase UmwStoF ae 9802
  286.  #pragma libcall ToolBase Fak b4 802
  287.  #pragma libcall ToolBase NuK ba 10803
  288.  #pragma libcall ToolBase berechnen c0 3210805
  289.  #pragma libcall ToolBase Init_Konst c6 0
  290.  #pragma libcall ToolBase Init_Mem cc 801
  291.  #pragma libcall ToolBase Init_Block d2 801
  292.  #pragma libcall ToolBase Set_Konst_P d8 10803
  293.  #pragma libcall ToolBase GetKonst_P de 19803
  294.  #pragma libcall ToolBase PreCalc e4 1002
  295.  #pragma libcall ToolBase Calc_P ea a9803
  296.  #pragma libcall ToolBase Free_Konst f0 801
  297.  #pragma libcall ToolBase Free_Block f6 801
  298.  #pragma libcall ToolBase CreatePort fc 802
  299.  #pragma libcall ToolBase DeletePort 102 801
  300.  #pragma libcall ToolBase CreateExtIO 108 802
  301.  #pragma libcall ToolBase DeleteExtIO 10e 802
  302.  #pragma libcall ToolBase CreateStdIO 114 801
  303.  #pragma libcall ToolBase DeleteStdIO 11a 801
  304.  #pragma libcall ToolBase LastMenu 120 801
  305.  #pragma libcall ToolBase LastItem 126 801
  306.  #pragma libcall ToolBase LastSub 12c 801
  307.  #pragma libcall ToolBase AddMenu 132 9803
  308.  #pragma libcall ToolBase AddItem 138 109804
  309.  #pragma libcall ToolBase AddSub 13e 109804
  310.  #pragma libcall ToolBase GetItem 144 109804
  311.  #pragma libcall ToolBase ClearMenu 14a 801
  312.  #pragma libcall ToolBase FreeItem 150 801
  313.  #pragma libcall ToolBase FreeMenu 156 801
  314.  #pragma libcall ToolBase NewSetMenuStrip 15c 8902
  315.